package main

import (
	"fmt"
	"math"
)

func loop(n int, x int) bool {
	nn := float64(n)
	xx := float64(x)
	if nn == 1 {
		return true
	}
	if nn == math.Pow(3, xx) {
		return true
	}
	if math.Pow(3, xx) > nn {
		return false
	}
	return loop(n, x+1)
}

// 官方解答
func isPowerOfThree(n int) bool {
	for n > 0 && n%3 == 0 {
		n /= 3
	}
	return n == 1
}
func main() {
	// 给定一个整数，写一个函数来判断它是否是 3 的幂次方。如果是，返回 true ；否则，返回 false 。
	// 整数 n 是 3 的幂次方需满足：存在整数 x 使得 n == 3x
	// n = 27 ===> n == 3·3·3 = 27
	/*
	   实现一个数的整数次方
	   pow(x, n)  pow(2, 3) = 8
	*/
	// pow(3,x) = n
	if loop(9, 1) {
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}

}
